package cn.com.bluemoon.daps.system.service;

import cn.com.bluemoon.daps.common.mp.IBmService;
import cn.com.bluemoon.daps.system.entity.DapSystemBizLineDetail;
import cn.com.bluemoon.daps.system.vo.BizLineDetailResponseVo;

import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Optional;

/**
 * <p>
 * 系统与业务线关系信息表 服务类
 * </p>
 *
 * @author admin
 * @since 2022-04-06
 */
public interface DapSystemBizLineDetailService extends IBmService<DapSystemBizLineDetail> {

    /**
     * 系统类型为数仓类型的（公共）
     */
    List<BizLineDetailResponseVo> findDefaultCommonDetailVos();

    /**
     * 系统类型为非数仓类型的当前业务线相关系统
     */
    List<BizLineDetailResponseVo> findDefaultBizLineDetailVosByBizLineId(@NotNull Integer bizLineId);

    /**
     * 获取系统+业务线的管理信息
     **/
    Optional<BizLineDetailResponseVo> findOneBySystemIdAndBizLineId(String systemId, Integer bizLineId);

    public List<BizLineDetailResponseVo> findBizLineDetailVos(@NotNull Integer bizLineId);

    void resetBizLineDetails(Integer bizLineId, List<DapSystemBizLineDetail> details);

    boolean removeByBizLineId(Integer bizLineId);

    List<DapSystemBizLineDetail> findByAdminUserId(String userId);

    List<DapSystemBizLineDetail> findByAdminOrDevelopUserId(String userId);

    /**
     * 业务线明细转vo
     * */
    BizLineDetailResponseVo toBizLineDetailResponseVo(DapSystemBizLineDetail detail);
}
